package com.odontosis.relatorio.conveniopolicia;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

import com.odontosis.entidade.Pagamento;
import com.odontosis.entidade.Servico;
import com.odontosis.entidade.TipoServico;
import com.odontosis.ioc.ContainerIoc;
import com.odontosis.service.ServicoService;
import com.odontosis.util.StringUtilsOdontosis;
import com.odontosis.view.OdontosisCadastroForm;

/**
 * 
 * @author pablo
 *
 */
public class FormRelatorioPoliciaPagamento extends OdontosisCadastroForm {
	
	
	private String dataInicio;
	
	private String dataFim;
	
	private String codigoProcedimento;
	
	public List<String> erros;
	
	

	public List<String> getErros() {
		return erros;
	}

	public void setErros(List<String> erros) {
		this.erros = erros;
	}
	
	public String getDataInicio() {
		return dataInicio;
	}

	public String getDataFim() {
		return dataFim;
	}

	public void setDataInicio(String dataIncio) {
		this.dataInicio = dataIncio;
	}

	public void setDataFim(String dataFim) {
		this.dataFim = dataFim;
	}

	@Override
	public ActionErrors validate(ActionMapping mapping,
			HttpServletRequest request) {
		ActionErrors errors = new ActionErrors();
		ActionMessages messages = new ActionMessages();

		if(!StringUtilsOdontosis.isDateValid(getDataInicio()) || !StringUtilsOdontosis.isDateValid(getDataFim())){
			messages.add("data", new ActionMessage("Os campos data Inicial e data Final devem ser informados."));
		}
		if(StringUtilsOdontosis.isDateValid(getDataInicio()) && StringUtilsOdontosis.isDateValid(getDataFim())){
			if(StringUtilsOdontosis.StringToDate(getDataInicio()).getTime() > StringUtilsOdontosis.StringToDate(getDataFim()).getTime()){
				messages.add("data", new ActionMessage("A data inicial deve ser menor ou igual a data final."));
			}
		}
		

		if (messages.size() > 0 && getMetodo() != null) {
			errors.add(messages);
			erros = new ArrayList<String>();
			for (Iterator iterator = messages.get(); iterator.hasNext();) {
				ActionMessage string = (ActionMessage) iterator.next();
				erros.add(string.getKey());
			}
			request.setAttribute("mensagens", erros);
			return errors;
		} else {
			request.setAttribute("mensagens", null);
			return super.validate(mapping, request);
		}
	}

	public String getCodigoProcedimento() {
		return codigoProcedimento;
	}

	public void setCodigoProcedimento(String codigoProcedimento) {
		this.codigoProcedimento = codigoProcedimento;
	}

	
	
	
	

}
